/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	ExpLeftCmpst.java
 * 模块说明：	
 * 修改历史：
 * Dec 13, 2007 - lxm - 创建。
 */
package com.hd123.rumba.gwt.cpnts.filter.client;

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.SourcesTabEvents;
import com.google.gwt.user.client.ui.TabListener;
import com.google.gwt.user.client.ui.TabPanel;
import com.hd123.rumba.gwt.base.client.exception.ClientBizException;

/**
 * 表达式左项 | 界面部件
 * 
 * @author lxm
 * 
 */
class ExpLeftCmpst extends Composite implements IFilterDialogCmpst {

  /**
   * 构造函数
   * 
   * @param owner
   *          指定所属窗体。
   */
  public ExpLeftCmpst(FilterDialog owner) {
    super();
    assert owner != null;
    this.owner = owner;
    drawSelf();
  }

  /**
   * 取得当前表达式字符串。
   * 
   * @return
   * @throws ClientBizException
   */
  public String getRunnableExp() throws ClientBizException {
    // TODO
    return "";
  }

  /**
   * 刷新界面的数据显示。
   * 
   * @throws ClientBizException
   */
  public void refresh() throws ClientBizException {
    // TODO
  }

  public FilterDialog getDialog() {
    return owner;
  }

  // --------------------------------------------------------------------------
  // 数据部分
  // --------------------------------------------------------------------------

  /** 所属窗体 */
  private FilterDialog owner;

  // --------------------------------------------------------------------------
  // 用户界面部分
  // pnlTab
  // >>wFieldPage 属性选择器页
  // >>wConstantPage 常量选择页
  // >>wFormulaPage 计算属性选择页
  // --------------------------------------------------------------------------

  private TabPanel pnlTab;

  private class Listener_pnlTab implements TabListener {

    public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) {
      return true;
    }

    public void onTabSelected(SourcesTabEvents sender, int tabIndex) {
      // TODO
    }

  }

  /** 属性选择器页 */
  private FieldSelectorCmpst wFieldPage;
  /** 常量选择页 */
  private ConstantSelectorCmpst wConstantPage;
  /**计算属性选择页*/
  private FormulaSelectorCmpst wFormulaPage;

  private void drawSelf() {
    pnlTab = new TabPanel();
    pnlTab.addTabListener(new Listener_pnlTab());

    // 添加tab：属性
    wFieldPage = new FieldSelectorCmpst(this);
    pnlTab.add(wFieldPage, "属性");

    // 添加tab：常量
    wConstantPage = new ConstantSelectorCmpst(this);
    pnlTab.add(wConstantPage, "常量");

    // 添加tab：计算属性
    wFormulaPage = new FormulaSelectorCmpst(this);
    pnlTab.add(wFormulaPage, "计算属性");
    
    this.initWidget(pnlTab);
  }

}
